package com.mall.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mall.db.api.UmsMenuApi;
import com.mall.pojo.UmsMenu;
import com.mall.utils.Result;
import com.mall.utils.TreeListUtil;
import com.mall.vo.UmsMenuVo;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UmsMenuService {

    @DubboReference
    private UmsMenuApi umsMenuApi;

    //添加后台菜单
    public void create(UmsMenu umsMenu) {
        umsMenuApi.create(umsMenu);
    }

    //根据ID删除后台菜单
    public void delete(Long id) {
        umsMenuApi.delete(id);
    }

    //分页查询后台菜单
    public Page<UmsMenu> list(Long parentId, Integer pageNum, Integer pageSize) {
        return umsMenuApi.list(pageNum, pageSize, parentId);
    }

    //修改后台菜单
    public void update(Long id, UmsMenu umsMenu) {
        umsMenuApi.update(id, umsMenu);
    }

    //修改菜单显示状态
    public void updateHidden(Long id, Integer hidden) {
        umsMenuApi.updateHidden(id, hidden);
    }

    //根据ID获取菜单详情
    public UmsMenu selectById(Long id) {
        return umsMenuApi.selectById(id);
    }

    public List<UmsMenuVo> treeList() {
        List<UmsMenu> umsMenus = umsMenuApi.selectAll();
        List<UmsMenuVo> vos = new ArrayList<>();
        for (UmsMenu umsMenu : umsMenus) {
            UmsMenuVo vo = new UmsMenuVo();
            BeanUtils.copyProperties(umsMenu,vo);
            vos.add(vo);
        }
        return TreeListUtil.buildTree(vos);
    }
}
